package object;

/**
 * 测试Object中的常用方法
 */
public class Demo {
    public static void main(String[] args) {
        Point p = new Point(1,2);
        /*
            Object提供了toString方法，该方法的作用是将当前对象转换为String
            该方法Object提供的默认实现返回的字符串为该对象的地址信息。实际开发
            中作用不大。所以经常会被派生类重写。
         */
        String line = p.toString();
        System.out.println(line);
        /*
            toString方法实际开发中很少被显示的调用，都是在使用某个API
            时被自动调用的。
         */
        //System.out.println(Object o),该方法会将对象toString返回的字符串输出
        System.out.println(p);

        /*
            在进行字符串链接操作时，也是会自动调用非String类型对象的toString先
            将其转换为字符串再链接的。
         */
        String str = "Point:" + p;
        System.out.println(str);


        Point p2 = new Point(1,2);
        /*
            ==与equals的区别
            对于引用类型变量而言保存的是地址，因此
            p==p2进行比较时，由于==是值比较，则说明这里比较的是p与p2保存的地址
            是否相同(是否指向同一个对象)
            p.equals(p2)则表达的意思是p对象的内容是否与p2对象的内容一样，而
            并不关心他们是否为同一个对象。
            注意:如果子类没有重写equals方法，Object实现时则使用==，因此不重写
            该方法则没有实际价值!
         */
        System.out.println(p == p2);//false
        System.out.println(p.equals(p2));//true
    }
}
